#coding=utf-8
from multiprocessing import Pool
import time

def subworker(msg):
    print "Subprocess:", msg
    time.sleep(3)
    print "End subprocess", msg

if __name__ == "__main__":
    pool = Pool(processes = 3)
    print "This is the main process!"
    for i in xrange(4):
        pool.apply(subworker, (i, ))
        # 维持执行的进程总数为processes，当一个进程执行完毕后会添加新的进程进去

    print "Mark~ Mark~ Mark~~~~~~~~~~~~~~~~~~~~~~"
    pool.close()
    pool.join()
    # 调用join之前，先调用close函数，否则会出错。执行完close后不会有新的进程加入到pool,join函数等待所有子进程结束
    print "Sub-process(es) done."
    print "Program end!"
